// 导入 express 模块
const express = require('express');
// 创建 express 的服务器实例
const app = express();

// jsonwebtoken:主要负责生成token  密钥
const jwt = require("jsonwebtoken");

// express-jwt: 主要负责对token进行解密，
// 它会将传递的token放在req.user属性中
const { expressjwt } = require("express-jwt");

const cors = require("cors");
app.use(cors());

app.use(express.urlencoded({ extended: false }));

// 对所有接口进行解密
const secret = "fuiandxwandiawhvuiwfe";
// 配置解密的全局中间件   
// secret:密钥，必填参数参与roken加密
// 版本更新 必备 algorithms: 加密算法方式，必填参数
app.use(expressjwt({
    secret: secret, algorithms: ["HS256"]

}).unless({
    path: [/^\/noauth\//]
}));

// 登录接口  不需要解密的接口加个 /noauth
app.post("/noauth/login", (req, res) => {
    let { username, password } = req.body;
    if (username == "123" && password == "123") {
        // 登录成功
        console.log("登录输出", req.body);
        const token = jwt.sign({username,password}, secret, {
            expiresIn: "1600s",    // 得到一个有效期的加密的token
        });
        res.send({
            msg: "登录成功",
            status: 1,
            token,
            nickname: "admin",
        });
    }
});

// 购物车
app.get("/auth/cart", (req, res) => {
    console.log("====", req.auth);
    res.send({
      msg: "购物车列表",
    });
  });


// 调用 app.listen 方法,指定端口号并启动web服务器
app.listen(8000, function () {
    console.log('服务器已启动, 127.0.0.1:8000');
})